package Learn;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

public class CollectionDemo2 {

    //Collection 遍历方式
    //迭代器 增强for Lambda表达式
    public static void main(String[] args) {

        //迭代器

//        Collection<String> list=new ArrayList<>();
//        list.add("aaa");
//        list.add("bbb");
//        list.add("ccc");
//        list.add("ddd");
//        Iterator<String> it= list.iterator();
        //hasNext 判断是否有下一个
//        boolean flag=it.hasNext();
//        System.out.println(flag);

//next 获取元素 并指向下一个元素
//        String str=it.next();
//        System.out.println(str);

        //遍历
//        while(it.hasNext()){
//            String str=it.next();
//            System.out.println(str);
//        }
        //迭代器遍历完指针不会复位 只能重新获取一个迭代器
        //循环中只能用一次next 奇数会报错 相当于获取了空指针的元素
        //（如果想要多次使用对象 str记录）
        //迭代器遍历时，不能用集合的方法进行增加或者删除

        //迭代器报错报的是NoSuchElementException

//        Iterator<String> it1= list.iterator();
//        while(it1.hasNext()){
//            String next = it1.next();
//            if("bbb".equals(next)){
////                list.remove("bbb");
//                //用迭代器的方法进行删除
//                it1.remove();
//            }
//
//        }
//        System.out.println(list);


        //增强for
        //格式
        //for(元素的数据类型 变量名 : 数组或集合)  //底层是迭代器 为了简化迭代器的书写
//        Collection<String> coll=new ArrayList<>();
//        coll.add("aaa");
//        coll.add("bbb");
//        coll.add("ccc");
//        coll.add("ddd");
//
//        for (String arg : coll) {
//            System.out.println(arg);
//        }

        //arg 就是一个第三方变量 只会表示集合的数据 不会修改集合的数据
        //所以给arg赋值时 不会改变集合里的值


        //lambda 表达式进行遍历
        Collection<String> coll=new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        //方法底层会遍历元素 会传递给accept方法
//        coll.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
        coll.forEach(s-> System.out.println(s));

    }

}
